CloudFormation の CommaDelimitedList でも AllowedValues と AllowedPattern が使えるようになりました
いわさです。
CloudFormation のパラメータで複数値での自由入力を許可したい場合には CommaDelimitedList 型を使うことが出来ます。
自由入力の場合に AllowedValues や AllowedPattern でチェックを行いたいシーンがあっても文字列でないため使えなかったのですが、今回のアップデートでサポートされました。
CloudFormation のドキュメント更新履歴からは確認出来ていないですが、数週間前から公式ドキュメントではサポートされた旨が追記されていそうです。
東京リージョン、大坂リージョンでも利用が可能です。
本日は実際にテンプレートをアップロードして動作を確認してみました。
CommaDelimitedList
以下の記事のテンプレートが検証しやすくて良い感じだったので、本記事ではこちらを流用させて頂きます。
大村さんありがとうございます!
このテンプレートの場合はデフォルト値を指定しています。
実際に CloudFormation でパラメータ入力時に以下のようにカンマ区切りで行うことで、テンプレート上では配列として扱うことで来ます。
AllowedValues
AllowedValues
自体は従来からある機能ですが、CommaDelimitedList
タイプでも使えるようになったので以下のように指定してみます。
AWSTemplateFormatVersion: 2010-09-09 Description: WAF IPSet Parameters: AllowAddresses: Description: IP list to allow access. Type: CommaDelimitedList AllowedValues: - 10.0.0.1/32 - 10.0.0.2/32 - 10.0.0.3/32 - 10.0.0.4/32 - 10.0.0.5/32 - 10.0.0.6/32 Resources: IPWhiteList: Type: "AWS::WAFv2::IPSet" Properties: Name: Custom-ipaddress-whitelist Scope: REGIONAL IPAddressVersion: IPV4 Addresses: !Ref AllowAddresses
10.0.0.1/32 ~ 10.0.0.6/32 だけ許可するような設定になったはずです。
以下のようにAllowedValues
で許可されていない値を含む形でカンマ区切りで入力してみます。
おお、エラーになりましたね。
続いて以下のように許可される値だけでカンマ区切りで入力してみます。
問題なく作成されました。
このように、今までどおりカンマ区切りのフリー入力が可能ですが入力エラーを加える形で事前検証出来るようになりました。
AllowedPattern
続いてAllowedPattern
も使ってみます。
こちらもAllowedPattern
自体は従来から使える機能です。
今回使っているテンプレートは CIDR 形式で入力するパラメータなので、以下の記事が相性良さそうなので正規表現を流用させて頂きました。
西野さんありがとうございます!
AWSTemplateFormatVersion: 2010-09-09 Description: WAF IPSet Parameters: AllowAddresses: Description: IP list to allow access. Type: CommaDelimitedList AllowedPattern: (^10\..+)|(^172\.(1[6-9]|2[0-9]|3[0-1])\..+)|(^192\.168\..+) Resources: IPWhiteList: Type: "AWS::WAFv2::IPSet" Properties: Name: Custom-ipaddress-whitelist Scope: REGIONAL IPAddressVersion: IPV4 Addresses: !Ref AllowAddresses
以下のように正規表現と一致しない値を含めてカンマ入力してみましょう。
エラーになりましたね。良いですね。
続いて正規表現に一致する値だけでカンマ区切りで構成した場合も確認してみます。
良いですね、無事作成することが出来ました。
さいごに
本日は CloudFormation の CommaDelimitedList でも AllowedValues と AllowedPattern が使えるようになったので試してみました。
今回の参考にさせて頂いた記事のように「個々の値としては特定 CIDR のみ許可したいが、でもCommaDelimitedList
型で複数入力かつフリーテキスト形式で入力させたい」などの場合の入力チェックとして特に活用出来そうです。